package middleware

import (
	"github.com/gin-gonic/gin"
	"github.com/marmotedu/iam/pkg/log"
)

const UsernameKey = "username"

// Context 是一个中间件，用于向 Gin 上下文注入通用的前缀字段。
// 具体来说，它会将请求 ID 和用户名注入到 Gin 上下文中，方便后续处理时使用。
func Context() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		// 从 Gin 上下文中获取请求 ID，并将其设置到日志的请求 ID 键中
		ctx.Set(log.KeyRequestID, ctx.GetString(XRequestIDKey))
		// 从 Gin 上下文中获取用户名，并将其设置到日志的用户名键中
		ctx.Set(log.KeyUsername, ctx.GetString(UsernameKey))
		// 继续处理请求
		ctx.Next()
	}
}
